﻿using System;
using System.Collections.Generic;
using System.Text;

namespace HL7v_2x
{
    public enum HL7TypeData
    {

        ///////////////////////////##################### TIPOS DE DATOS NUMERICOS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeCQ:
        /// Esta destinado a indicar cantidades y unidad de medida. Tiene dos componentes, en el primero se 
        /// expresa la cantidad y en el segundo la unidad de medida. <quantity (NM)> ^ <units (CE)>. 
        /// Por ejemplo, para expresar que una persona pesa 123.7 Kilogramos seria : |123.7^kg|							
        /// </summary>      
        TypeCQ,

        /// <summary>
        ///TypeMO: 
        ///"Este tipo de dato es específicamente para todo lo que sea dinero y tiene dos componentes. 
        ///El primero es la cantidad y el segundo el tipo de moneda. <quantity (NM)> ^ <denomination (ID)>. 
        ///Por ejemplo, para especificar que un medicamento cuesta U$S 99.50 seria : |99.50^USD|"							
        /// </summary>      
        TypeMO,

        /// <summary>
        /// TypeNM: Esta especificado para expresar solo números. Es una serie de caracteres numéricos ASCII, donde el signo es opcional (+ ó -). 
        /// La ausencia de signo implica que el valor es positivo. Con el mismo criterio el punto decimal es opcional y la ausencia de este 
        /// implica que el valor es entero. Ej. |-999.99|							
        /// </summary>  
        TypeNM,

        /// <summary>
        /// TypeSI: Este tipo de dato básicamente es un entero positivo y el uso primordial es para expresar secuencias o repeticiones de segmentos.							
        /// </summary>
        TypeSI,

        /// <summary>
        /// TypeSN: El tipo de dato estructurado es utilizado para expresar, en general, resultados clínicos con algún tipo de calificador. 
        /// Esto habilita al sistema receptor a almacenar los componentes en forma separada y poder luego analizarlos. 
        /// Los sets de valores están indicados con un comparador y un separador/sufijo 
        /// (Comparadores pueden ser “=”, “>”, “<”, “>=”, “<=” or “<>”- Separador “-“, “+”, “/”, “.”, o “:”) 
        /// La estructura seria: comparator(ST)>^<num1(NM)>^<separator/ suffix(ST)>^<num2(NM)>. 
        /// Ej. |>^100| (mayor que 100). Ej. |^100^-^200| (igual a un rango entre 100 y 200). Ej. |^1^:^128| 
        /// (título de 1:128 - serología). Ej. |^2^+| (Respuesta categórica. Ej: positividad de SOMF)							
        /// </summary>
        TypeSN,


        ///////////////////////////##################### TIPOS DE DATOS PARA FECHAS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeDT: Este tipo de dato es específicamente para expresar fechas, meses o solamente años. 
        /// El formato es el siguiente: YYYY[mm[DD]]. Tengan en cuenta que los corchetes implican opcionalidad por lo que puede 
        /// que no estén incluidos. Expresado de esa forma, el mes es opcional y el grupo mes día también lo es. 
        /// Por ejemplo, para expresar el 15 de octubre de 2006 seria 20061015. Para expresar Mayo de 2007 seria 200705.							
        /// </summary>
        TypeDT,

        /// <summary>
        /// TypeTM: Este tipo de dato centra la importancia en la hora y no se especifica ni el día ni el mes ni el año. 
        /// El formato es el siguiente: HH[mm[SS[.S[s[s[s]]]]]] [+/-ZZZZ] Si expresamos HH la presición es a nivel hora, HHMM, 
        /// a nivel minuto y SS a nivel segundo. Si utilizamos SSSS la presición alcanza la diezmilésima de segundo. 
        /// ZZZZ esta especificado para indicar la zona horaria y es un componente opcional. Veamos algunos 
        /// ejemplos: |235959+1100| indica que falta 1 segundo para la medianoche en la zona horaria ubicada 11 horas por 
        /// delante de la hora universal. |0800| las ocho de la mañana de la hora local. |093544.2312| son 44.2312 segundos 
        /// después de las 9:35 AM de la hora local.|13| 1 PM de la hora local del emisor.							
        /// </summary>
        TypeTM,

        /// <summary>
        /// TypeTS: Este dato contiene el momento exacto en que ocurre el evento incluyendo fecha y hora. 
        /// La presición de este tipo de dato sigue las reglas de las anteriores por lo que no lo vamos a especificar. 
        /// Su estructura es la siguiente: YYYY[mm[DD[HHMM[SS[.S[S[S[S]]]]]]]] [+/-ZZZZ]^ <grado de precisión> 
        /// Ejemplo: |19760704010159| indica la 1:01:59 AM del 4 de julio de 1976							
        /// </summary>
        TypeTS,

        ///////////////////////////##################### IDENTIFICADORES ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeIS: Este tipo de dato esta reservado para tablas definidas por el usuario. 
        /// Dentro de cada implementación muchos valores serán codificados y puestos en una tabla para referencia de los sistemas. 
        /// Por ejemplo, la tabla de sexos Value Description F Female M Male O Other  U Unknown Estas tablas son definidas en cada 
        /// instalación y no por el proveedor del software.							
        /// </summary>
        TypeIS,

        /// <summary>
        /// TypeID: Este tipo de dato indica que el valor esta tabulado y especificado dentro del estándar HL7. 
        /// Al encontrarnos con este tipo de dato debemos buscar la definición y los valores dentro de las 
        /// tablas especificadas en el estándar. Por ejemplo hay tipo de datos donde uno debe expresar “si” o “no”. 
        /// Estos valores están especificados en la tabla del estándar 0316 yes/no indicator y 
        /// donde los valores posibles son Y (yes) o N (no).							
        /// </summary>
        TypeID,

        /// <summary>
        /// TypeHD: Este tipo de identificador esta relacionado con el identificador de aplicaciones. 
        /// Su estructura es : <namespace ID (IS)> ^ <universal ID (ST)> ^ <universal ID type (ID)> 
        /// Consta de tres componentes donde el primero se indica el id, el segundo es un string con formato de acuerdo al tercer componente. 
        /// El tercer componente le da interpretación al segundo. Si es una entidad definida localmente, solo se completaremos <namespace ID>. 
        /// Ejemplo “Hospital A”. Si la entidad es asignada públicamente, se utilizan los últimos dos componentes. 
        /// Universal ID type (ID) es el Identificador de dominio dentro del cual el ID es único. 
        /// Ejemplos de Universal ID type son: DNS, ISO etc…Ejemplo: HL7.org^DNS Universal ID (ST) es un identificador que es único dentro 
        /// del dominio Universal ID Type. Dentro de los principales usos se destacan: Usado para Aplicación e Instalación receptora y 
        /// emisora en el segmento MSH. Usado para Autoridad de Asignación para identificadores de paciente.							
        /// </summary>
        TypeHD,                      

        /// <summary>
        /// TypeEI: Este tipo de dato expresa identificadores asignados por una aplicación. 
        /// Consta de 4 componentes y el primero es el ID propiamente dicho y los otros tres identifican a la autoridad que los asignó. 
        /// Su estructura es la siguiente: <entity identifier (ST)> ^ <namespace ID (IS)> ^ <universal ID (ST)> ^ < universal ID type (ID)> 
        /// Expresa un identificador único dentro de la entidad especificada. 
        /// Ejemplos de uso : Número de Protocolo (lab), Número de Orden, Episodio de internación, Número de Autorización, 
        /// Identificador de Edificio, etc. Ejemplo: |125658^HIS_HIBA| seria el id 125658 asignado por el sistema de información 
        /// hospitalaria del Hospital Italiano de Buenos Aires							
        /// </summary>
        TypeEI,

        /// <summary>
        /// Este tipo de dato se utiliza para transmitir información sobre “cosas” almacenadas en otro sistema, 
        /// cuál es el otro sistema y qué tipo de dato vamos a encontrar. Su estructura es : 
        /// <pointer (ST)> ^ <application ID (HD)> ^ <type of data (ID)> ^ < subtype (ID)> 
        /// El primer componente indica a donde se encuentra unívocamente el recurso. El segundo, application ID es el 
        /// identificador de la aplicación que almacena el dato. Es un tipo de dato HD, por lo que este campo se va a dividir 
        /// a su vez en subcomponentes. En el tercer componente se indica el tipo de información a encontrar (imagen, 
        /// archivo de audio, etc). El último es el formato declarado en el tipo de dato. 
        /// Ejemplo: si en el tercer componente decimos que es una imagen, posibles valores son DICOM, TIFF, JPEG, GIF, GIF etc… 
        /// Usos: para indicar Audio, JPEG, RF, TX, DICOM, HTML, Aplicación. |http://www.hl7.org/image/about2.gif^HL7^image^GIF|							
        /// </summary>
        TypeRP,

        /// <summary>
        /// "Este tipo de dato se utiliza para especificar la ubicación de un paciente dentro de una institución. 
        /// Se asignan valores a los distintos componentes dependiendo de la necesidad de cada sitio. 
        /// Puede tener otros usos además de la ubicación de un paciente, como por ejemplo, la ubicación de un consultorio 
        /// para una oferta de turnos. Los componentes son: 
        /// <point of care (IS )> ^ <room (IS )> ^ <bed (IS )> ^ <facility (HD)> ^ < location status (IS )> ^ <person location type (IS)> ^ <building (IS )> ^ <floor (IS )> ^ <location description (ST)> 
        /// Point of care es un agrupador de lugares en base a un criterio en particular. Por ejemplo Unidad de enfermería o 
        /// Departamento de Clínica médica. Room es la habitación y Bed la cama. Facility es el más general de los indicadores de lugar. 
        /// Location Status indica el estado de ese lugar. El uso mas común es para indicar el estado de una cama 
        /// por ejemplo en un censo en línea (si esta ocupada, reservada, libre, etc). Person location type es para especificar a 
        /// qué tipo de elemento nos estamos refiriendo. Por ejemplo, para el caso de las camas, si es una cama común, 
        /// una ortopédica, con barandas, etc. Building el edificio, Floor el piso y Location description es para especificar un 
        /// texto libre con la descripción del mismo. El siguiente 
        /// ejemplo: |CLM^210^2101^HIBA^^^HICENTRAL^2^CAMA 2101 HOSPITAL ITALIANO DE BUENOS AIRES – EDIFICIO GASCON| 
        /// Indica que el paciente se encuentra en el departamento de “Clínica Médica” (CLM) en la habitación 210, cama 2101 del segundo 
        /// piso del edificio de la calle Gascon del Hospital Italiano de Buenos Aires"							
        /// </summary>
        TypePL,

        /// <summary>
        /// TypePT: Indica la forma en que hay que procesar el mensaje recibido. Se utiliza en MSH-11. Su estructura es : 
        /// <processing ID (ID)> ^ <processing mode (ID)> El primer componente tiene tres valores posibles 
        /// (D:Debugging, P: Production, T: Training); mientras que processing mode posee cuatro valores posibles 
        /// (A: Archive, R: Restore from archive, I: Initial load, not present) Ejemplo: |P^A| indica que el mensaje 
        /// es de producción y que los datos que en él se encuentran serán almacenados.							
        /// </summary>
        TypePT,

        /// <summary>
        /// TypeVID: Version Identifier
        /// <version ID (ID)> ^ <internationalization code (CE)> ^ <international version ID (CE)
        /// </summary>
        TypeVID,

        ////////////////////////########################### VALORES CODIFICADOS ################################////////////////////////////
        /// <summary>
        /// TypeCE: Este tipo de datos transmite códigos con texto asociado al código. 
        /// Se especifica con 6 componentes. Los tres primeros especifican un sistema de codificación y los otros tres un sistema de 
        /// codificación alternativo. Su estructura es: 
        /// <identifier (ST)> ^ <text (ST)> ^ <name of coding system (ST)> ^ <alternate identifier (ST)> ^ <alternate text (ST)> ^ <name of 
        /// alternate coding system (ST)> 
        /// El primer identificador hace referencia al código, el segundo a una descripción de ese código y el último a que sistema de 
        /// codificación corresponde. Para el identificador alternativo el esquema es el mismo. Ejemplo: |F-11380- ^CREATININE^I9^2148-^CREATININE^LN|							
        /// </summary>
        TypeCE,

        /// <summary>
        /// TypeCNE: Este tipo de dato indica que los valores a incluir en este dominio deben ser codificados con los valores establecidos 
        /// y NO admite excepciones. No puedo utilizar, como en otros casos, un sistema de codificación inventado por el encargado 
        /// de la mensajería. El criterio en cuanto a sus componentes es similar al tipo de dato CE agregando una versión del sistema 
        /// de codificación utilizado y un texto. Su estructura es: 
        /// <identifier (ST)> ^ <text (ST)> ^ <name of coding system (IS)>^ <alternate identifier (ST)> ^ <alternate text (ST)> ^ <name of 
        /// alternate coding system (ST)>^<version ID(ST)^alternate coding system version ID(ST)^<original text>(ST) Ejemplo: |718-7^Hemoglobin^LN^^^^1.0|							
        /// </summary>
        TypeCNE,

        /// <summary>
        /// TypeCWE: El concepto es similar al CNE pero con la salvedad que este tipo de dato SI admite excepciones. 
        /// Uno puede establecer un sistema de codificación a enviar pero si por algún motivo este código no estuviera 
        /// disponible puede enviarse otro. Su estructura es: 
        /// <identifier (ST)> ^ <text (ST)> ^ <name of coding system (IS)> ^ <alternate identifier (ST)> ^ <alternate text (ST)> ^ <name of 
        /// alternate coding system (ST)>^<version ID(ST)^alternate coding system version ID(ST)^<original text>(ST) 
        /// Ejemplo: |718^Hemoglobina^HI^^^^1.0| Este valor indicaría que se trata del código 718 del Hospital Italiano (HI) para la hemoglobina.							
        /// </summary>
        TypeCWE,

        /// <summary>
        /// TypeCF: Este tipo de dato transmite códigos pero con el texto asociado formateado. Por ejemplo uno podría enviar el texto de un 
        /// resultado y al estudio en si darle un formato vistoso o resaltarlo ante valores anormales. Los componentes son similares 
        /// al CE pero en este caso los textos son del tipo FT (formated text) y no ST. Su estructura es : 
        /// <identifier (ST)> ^ <text (FT)> ^ <name of coding system (ST)> ^ <alternate identifier (ST)> ^ <alternate text (FT)> ^ <name of 
        /// alternate coding system (ST)>. Ejemplo: |79989^\H\Descripción:\N\\.sp\\ti+4\ \.sp+3\\H\ Impresión:\N\\.sp\\.ti+4\Negativo.^CPMC 
        /// El corazón no se encuentra dilatado. No hay evidencia de neumonia, sangrado neumotorax o alguna masa.							
        /// </summary>
        TypeCF,

        /// <summary>
        /// TypeCK: Este tipo de dato es usado para ciertos campos que comúnmente contienen dígitos verificadores. Por ejemplo la 
        /// identificación de pacientes. Si en la implementación no se utiliza el dígito verificador, el segundo y tercer componente 
        /// no deben ser enviados. Su estructura es: <ID number (NM)> ^ <check digit (NM)> ^ <code identifying the check digit scheme 
        /// employed (ID)> ^ < assigning authority (HD)><effective date(DT)><expiration date(DT)> En el primer componente se especifica 
        /// el código, en el segundo el dígito verificador, en el tercero cuál es el algoritmo utilizado para calcular ese dígito 
        /// verificador, quién asignó ese código y en los dos últimos las fechas tanto de asignación como de expiración. 
        /// Ejemplo: |128952^6^M11^ADT01| En este caso el código 128952 tiene como dígito verificador al 6 y es calculado utilizando 
        /// el algoritmo Mod 11 por el sistema ADT01.							
        /// </summary>
        TypeCK,

        /// <summary>
        /// TypeCX: "Este tipo de dato se utiliza para especificar un identificador con todo el detalle administrativo. Su estructura es :
        /// <ID (ST)> ^ <check digit (ST)> ^ <code identifying the check digit scheme employed (ID)> ^ < assigning authority (HD)> ^ <identifier 
        /// type code (ID)> ^ < assigning facility (HD) ^ <effective date (DT)> ^ <expiration date (DT)>
        /// Ejemplo: |1234567^4^M11^ADT01^MR^University Hospital|"							
        /// </summary>
        TypeCX,

        /// <summary>
        /// TypeCN: Este campo identifica a una persona con un valor codificado y con un texto explicativo o que detalla de 
        /// quien o que se trata. Su estructura es: <ID number (ST)> ^ <family name (FN)> ^ <given name (ST)> ^ < second and 
        /// further given names or initials thereof (ST)> ^ <suffix (e.g., JR or III) (ST)> ^ <prefix (e.g., DR) (ST)> ^ 
        /// <degree (e.g., MD) (IS)> ^ <source table (IS)> ^ <assigning authority (HD)> Ejemplo : |12372^RIGGINS^JUAN^””^””^””^MD^ADT1|							
        /// </summary>
        TypeCN,

        /// <summary>
        /// TypeXCN: Este tipo de dato se utiliza principalmente para identificar una persona tanto como valor codificado y por su nombre. 
        /// Usado para doctores y personal en general. Su estructura es: <ID number (ST)> ^<family name (ST)> ^<given name (ST)> ^<middle 
        /// initial or name (ST)> ^<suffix (e.g., JR or III) (ST)> ^<prefix (e.g., DR) (ST)> ^<degree (e.g., MD) (ST)> ^<source table 
        /// (IS)> ^<assigning authority (HD)>^<name type code(ID)>^<identifier check digit(ST)>^<code identifying the check digit 
        /// employed(ID)>^<identifier type code(IS)>^<assigning facility(HD)>^<name representation code(ID)>^<name context(CE)>^<name 
        /// validity range(DR)>^<name assembly order> Ejemplo: Ej. |1234567^Perez^Juan^^^DR^MD|							
        /// </summary>
        TypeXCN,

        ///////////////////////////##################### GENERICOS ################################/////////////////////////////////////////////
        /// <summary>
        /// "TypeCM: Este tipo de dato no se utiliza en las nuevas versiones y se lo mantiene exclusivamente para compatibilidad con 
        /// versiones anteriores. Brinda una combinación de otros tipos significativos. Se han creado nuevos tipos de datos para 
        /// reemplazar este. Por ejemplo, los nuevos campos que aparecieron a partir de la versión 2.5 que reemplazaron al campo CM son:
        /// AUI - authorization information
            TypeAUI,
        /// CCD - charge code and date
            TypeCCD,
        /// CCP - channel calibration parameters
            TypeCCP,
        /// CNN - composite ID number and name simplified
            TypeCNN,
        /// CSU - channel sensitivity
            TypeCSU,
        /// DDI - daily deductible information
            TypeDDI,
        /// DIN - date and institution name
            TypeDIN,
        /// DLD – discharge to location and date
            TypeDLD,
        /// DLT - delta
            TypeDLT,
        /// DTN - day type and number
            TypeDTN,
        /// EIP - entity identifier pair
            TypeEIP,
        /// ELD - error location and description
            TypeELD,
        /// ICD - insurance certification definition
            TypeICD,
        /// LA1 - location with address variation 1
            TypeLA1,
        /// LA2 - location with address variation 2
            TypeLA2,
        /// MOP - money or percentage
            TypeMOP,
        /// MSG - message type
            TypeMSG,
        /// NDL – name with date and location
            TypeNDL,
        /// NR - numeric range
            TypeNR,
        /// OCD - occurrence code and date
            TypeOCD,
        /// OSD - order sequence definition
            TypeOSD,
        /// OSP - occurrence span code and datePLN – practitioner license or other Id number
            TypeOSP,        
        /// PRL - parent result link"							        
            TypePRL,
        /// </summary>
        TypeCM,

        ///////////////////////////##################### DEMOGRAFICOS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeAD, TypeXAD: "Este tipo de dato es utilizado para indicar direcciones y su estructura es la siguiente: 
        /// <street address (ST)> ^ < other designation (ST)> ^ <city (ST)> ^ <state or province (ST)> ^ <zip or postal code 
        /// (ST)> ^ <country (ID)> ^ <address type (ID)> ^ <other geographic designation (ST)> ^ <county/parish code (IS)> ^ <census tract
        /// (IS)> ^ <address representation code(ID)> Por ejemplo para indicar la dirección del número 10 de la calle
        /// CASTLE ROAD de la ciudad PLEASANTTOWN del estado HAPPYSTATE, con código postal 48132 del país CHARMINGLAND la expresamos 
        /// de la siguiente manera: |10 CASTLE ROAD ^^PLEASANTTOWN^HAPPYSTATE^ 48132^CHARMINGLAND|"							
        /// </summary>
        TypeAD,TypeXAD, 

        /// <summary>
        /// TypePN,TypeXPN: "Este tipo de dato es específico para identificar personas físicas. El formato es el siguiente: 
        /// <family name (ST)> & < last_name_prefix (ST)> ^ <given name (ST)> ^ <middle initial or name (ST)> ^ <suffix 
        /// (e.g., JR or III) (ST)> ^ <prefix (e.g., DR) (ST)> ^ <degree (e.g., MD) (IS)> ^ <name type code (ID) > ^ <name representation code (ID)>
        /// Por ejemplo para hacer referencia al Rey Jorge Borbon podemos realizarlo con la siguiente expresión: |Jorge^Borbon^^^Rey|"							
        /// </summary>
        TypePN, TypeXPN,

        /// <summary>
        /// TypeTN, TypeXTN: "Este tipo de dato lo utilizamos para indicar números telefónicos. Su formato 
        /// es: [NN] [(999)]999-9999[X99999][B99999][C any text] ^ <telecommunication use code (ID)> ^ <telecommunication equipment type (ID)> ^ 
        /// <email address (ST)> ^ <country code (NM)> ^ <area/city code (NM)> ^ <phone number (NM)> ^ <extension (NM)> ^ <any text (ST)> 
        /// Por ejemplo, si queremos indicar el teléfono (415) 925-0121 con la extensión o interno 305, lo expresamos 
        /// así: |(415)925-0121X305| Podemos agregar cualquier comentario a un número telefónico de la siguiente manera: |234-4532CWEEKENDS|"							
        /// </summary>
        TypeTN,TypeXTN,

        /// <summary>
        /// TypeXON: Este tipo de datos es utilizado para identificar organizaciones y su formato es: <organization name (ST)> ^ <organization name type code (IS)> ^ <ID number (NM)> ^ <check digit (NM)> ^ <code identifying the check digit scheme employed (ID)> ^ <assigning authority (HD)> ^ <identifier type code (IS)> ^ <assigning facility ID (HD)> ^ <name representation code(ID)> Este tipo de datos es similar a XPN pero para organizaciones.							
        /// </summary>
        TypeXON,

        ///////////////////////////##################### ONDAS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeCD: Este tipo de dato es utilizado para etiquetar datos de ondas digitales. Channel Identifier (WVI)^Waveform  
        /// source (WVS)^Channel Sensitivity and Units (CSU)^Channel Calibration Parameters (CCP)^Channel Sampling 
        /// Frequency (NM) El largo máximo de este campo es: 581							
        /// </summary>
        TypeCD,

        /// <summary>
        /// TypeMA: Este tipo de dato es utilizado para representar datos de ondas en canales multiplexados. 
        /// El formato se especifica en estructuras repetitivas de muestras (samples): Sample i From Channel 1 (NM)^ 
        /// Sample i From Channel 2 (NM)^ Sample i From Channel n (NM) ~ … Por ejemplo si queremos representar a tres 
        /// canales idénticos y 6 muestras tenemos: |0^0^0~1^1^1~2^2^2~3^3^3~4^4^4~5^5 ^5| Para representar a un 
        /// único canal y 11 muestras tenemos: |0~1~2~3~4~5~6~7~8~9~10|							
        /// </summary>
        TypeMA,

        /// <summary>
        /// Usado para representar una serie de valores numéricos. Valor 1 (NM)^ Valor 2 (NM)^ Valor n (NM) 
        /// ~ …Por ejemplo para representar un vector de 8 números: |125^34^- 22^-234^569^442^-212^6|Para representar 
        /// una matriz de 3 x 3: |1.2^-3.5^5.2~2.0^3.1^-6 .2~3.5^7.8^-1.3| Por ejemplo, podemos representar una matriz 
        /// de 5 x 4 de la siguiente manera: |^2^3^4~5^^^8~9^10~~17^18^19^20| Notemos que las posiciones (1,1), (2,2), (2,3), 
        /// (3,3), (3,4), (4,1), (4,2), (4,3), y (4,4) no están presentes y sin embargo es correcta esta representación.							
        /// </summary>
        TypeNA,

        /// <summary>
        /// Este tipo de datos es utilizado para transmitir datos encapsulados como por ejemplo MIME (BASE 64) de un 
        /// origen a un destino. Es similar al tipo RP pero éste es un puntero y ED incluye los datos. Su formato es: 
        /// <source application (HD) > ^ <type of data (ID)> ^ <data subtype (ID))> ^ <encoding (ID)> ^ <data (ST)>							
        /// </summary>
        TypeED,

        ///////////////////////////##################### FINANZAS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeFC: Este tipo de dato se usa para definir ‘Tipo de cobertura’. <financial class (IS)> ^ <effective date (TS)> 
        /// Por ejemplo, para indicar que se ha asignado la cobertura Medicare el día 10 de octubre de 2003 la expresamos 
        /// de la siguiente forma: |Medicare^20031010| El largo máximo de este campo es: 47							
        /// </summary>
        TypeFC,

        ///////////////////////////##################### REGISTROS MEDICOS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypePPN: Este tipo de dato se usa para definir a la persona que realiza alguna acción en el tiempo. 
        /// Se define como: <ID number (ST)> ^ <family name (ST)> ^ <given name (ST)>^ <middle initial or name (ST)> ^ 
        /// <suffix (e.g., JR or III) (ST)> ^ <prefix (e.g., DR) (ST)> ^ <degree (e.g., MD) (ST)> ^ <source table (IS)> ^
        /// <assigning authority (HD)> ^ <name type code(ID)> ^ <identifier check digit (ST)> ^ <code identifying the check 
        /// digit scheme employed (ID )> ^ <identifier type code (IS)> ^ <assigning facility (HD)> ^ < date/time action 
        /// performed (TS)>^<name  epresentation code(ID)^<name context(CE)>^<name validity range(DR)>^<name assembly order(ID) 
        /// Es idéntico a XPN pero agrega una fecha/hora (Time Stamp).							
        /// </summary>
        TypePPN,

        ///////////////////////////##################### PRECIOS ################################/////////////////////////////////////////////
        /// <summary>
        /// "Este tipo de dato se utiliza para especificar precios. Generalmente se utliza para especificar 
        /// distintas tarifas que varían según algún criterio especificado, para esto se expresan en forma repetitiva. 
        /// Su formato es: <price (MO)> ^ <price type (ID)> ^ <from value (NM)> ^ <to value (NM)> ^ <range units (CE)> ^ <range type (ID)> 
        /// Reemplazó a MO a partir de la versión v2.3.
        /// HL7 Table 0205 - Price type
        /// AP administrative price or handling fee
        /// DC direct unit cost
        /// IC indirect unit cost
        /// PF professional fee for performing provider
        /// TF technology fee for use of equipment
        /// TP total price
        /// UP unit price, may be based on length of procedure or service
        /// HL7 Table 0298 - CP range type
        /// P Pro-rate. Apply this price to this interval, pro-rated by whatever portion of the interval has occurred/been
        /// consumed
        /// F Flat-rate. Apply the entire price to this interval, do not pro-rate the price if the full interval has not
        /// Por ejemplo: |100.00&USD^UP^0^9^min^P~ 50.00&USD^UP^10^59^min^P~ 10.00&USD^UP^60^999^P~
        /// 50.00&USD^AP~ 200.00&USD^PF| Expresa que para los primeros 9 minutos el precio unitario es de
        /// 100 dólares, luego la tarifa es de 50 dólares hasta la primera hora. Después de la primera hora el 
        /// precio es de 10 dólares. Se debe también agregar 50 dólares en concepto de gastos administrativos y 
        /// 200 dólares de honorarios profesionales."							
        /// </summary>
        TypeCP,

        ///////////////////////////##################### CONSULTAS EXTENDIDAS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeQSC: "Especifica la condición que califica a las filas para ser devueltas como respuesta a las 
        /// consultas (el WHERE del SQL) Su formato es: <name of field (ST)> ^ <relational operator (ID)> ^ 
        /// <value (ST)> ^ <relational conjunction (ID)> Por ejemplo, para especificar un filtro de una consulta 
        /// en dónde queremos filtrar únicamente a las mujeres solteras que vivan en Almagro: |@00111^EQ^F^AND| 
        /// |@00119.1^EQ^SOLTERO ^AND| @00114.6^EQ^ALMAGRO|"
        /// </summary>
        TypeQSC,

        /// <summary>
        /// TypeQIP: Este tipo de dato se utiliza para indicar una lista parámetros y valores a ser pasados a un 
        /// procedimiento almacenado (stored procedure). Lo utilizamos en el segmento ERQ y el formato es: 
        /// <field name (ST) > ^ <value1 (ST) & value2 (ST) & value3 (ST) ...>							
        /// </summary>
        TypeQIP,
        
        /// <summary>
        /// "Este tipo de datos lo utilizamos para definir filas y columnas. Se especifica cada columna, su tipo de 
        /// dato y el largo máximo. Su expresión es: <HL7 item number (ST)> ^ <HL7 data type (ST)> ^ <maximum column width (NM)> 
        /// Por ejemplo, su uso en el segmento RDF es: RDF|3|@00108.1^ST^20~@00108.2^ST^20~@00114.5^ST^5|"							
        /// </summary>
        TypeRCD,

        ///////////////////////////##################### ARCHIVOS MAESTROS ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeDLN: Especifica el número de licencia de conducir. Su formato es: <license number (ST)> ^ <issuing state, province,  
        /// ountry (IS)> ^ <expiration date (DT)>							
        /// </summary>
        TypeDLN,

        /// <summary>
        /// TypeJCC: Lo utilizamos para indicar un código de trabajo, una clasificación y un texto descriptivo. Su formato es: 
        /// <job code (IS)> ^ <job class (IS)> ^ <Job Description Text (TX)> Por ejemplo, para un trabajo codificado 
        /// (dónde 1 representa el código para administrador y F representa full time) |1^F^Administrador| 
        /// Para un trabajo no codificado (dónde los trabajos no están codificados y PT significa part time) 
        /// Example 2: Uncodified job (where job codes are not codified and PT represents part time) |^PT^Analista|							
        /// </summary>
        TypeJCC,

        /// <summary>
        /// TypeVH: "Este tipo de datos se utiliza para definir los horarios de visita, especificando un rango de días y rando de horas. 
        /// Su formato es: <start day range (ID)> ^ <end day range (ID)> ^ <start hour range (TM)> ^ <end hour range (TM)>
        /// Por ejemplo, para definir que los horarios de visita son de lunes a viernes de 10 a 17 y de 9 a 17 para los fines de semana. 
        /// |MON^FRI ^1000^1700~SAT^SUN^900^1700|"							
        /// </summary>
        TypeVH,

        ///////////////////////////##################### SERIES TEMPORALES ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeDR: Especifica un rango de fechas. Su formato es: <range start date/ time (TS)> ^ <range end date/time (TS)> 
        /// Debemos tener en cuenta que siempre la primera fecha debe ser menor a la segunda.							
        /// </summary>        
        TypeDR,

        /// <summary>
        /// TypeRI: "Este tipo de dato se lo utiliza para especificar el intervalo entre citas o acciones repetitivas. 
        /// Su formato es: <repeat pattern (IS)> ^ <explicit time interval (ST)> En caso de no asignarse ningún 
        /// valor a este componente asumimos que ocurre una única vez. El patrón de repetición es similar al 
        /// intervalo del campo Quantity / Timing. Por ejemplo para indicar que algún suceso ocurre cuatro veces por 
        /// día en los horarios 2:30 Hs., 8:30 Hs., 14:30 Hs. Y 20:30 Hs. ^QID&0230,0830,1430,2030^"
        /// </summary>
        TypeRI,

        /// <summary>
        /// "Se lo utiliza para especificar preferencias para turnos. Su formato es: <parameter class(ID)> ^ <parameter value(ST)> 
        /// Por ejemplo, si queremos decir que los Lunes son días preferidos para turno, los miércoles no y 
        /// el horario preferido para comenzar son las 8:00 Hs. Ej. Mon^OK Ej. Wed^NO Ej. Prefstart^0800"							
        /// </summary>
        TypeSCV,

        /// <summary>
        /// TypeTQ: Este tipo de datos describe cuando debe ser brindado un servicio y con que frecuencia. 
        /// Su formato está descripto en el capítulo 4 de órdenes y su formato es: <quantity (CQ)> ^ 
        /// <interval (*)> ^ <duration (*)> ^ <start date/time (TS)> ^ <end date/time (TS)> ^ <priority (ST)> ^ 
        /// <condition (ST)> ^ <text (TX)> ^ <conjunction (ST)> ^ <order sequencing (*)>^ <occurrence duration (CE)> ^ 
        /// <total occurrences (NM)> Este tipo de datos es mantenido únicamente para compatibilidad con versiones anterior. 
        /// A partir de la v2.5 se utilizan los segmentos TQ1 y TQ2. Por ejemplo, para ordenar 3 unidades de sangre para 
        /// ser transfundidas una única vez: 3^Once. Para ejecutar un servicio todos los martes a las 14:32 comenszando 
        /// el 23 de mayo del 2006. 1^Q1J2^^200605231432							
        /// </summary>
        TypeTQ,

        /// <summary>
        /// Este es el segundo componente de tipo TQ. Especifica primero un patrón de repetición y luego un intervalo 
        /// explícito de tiempo. Su formato es: <repeat pattern (IS)> ^ <explicit time interval (ST)> Es similar a RI.							
        /// </summary>
        TypeIntervalComponent,

        ///////////////////////////##################### ALPHANUMERIC ################################/////////////////////////////////////////////
        /// <summary>
        /// TypeST: String
        /// </summary>
        TypeST,

        /// <summary>
        /// TypeTX: TextData
        /// </summary>
        TypeTX,

        /// <summary>
        /// TypeFT: Formatted Text. This field is used when source of comment must be identified. This table may be extended locally during implementation.
        /// In the current HL7 version, this is a FT rather than a TX data type. Since there is no difference between a FT
        /// data type without any embedded formatting commands, and a TX data type, this change is compatible with the previous version.
        /// </summary>
        TypeFT,

        /// <summary>
        /// TypeSRT: Sort Order
        /// </summary>
         TypeSRT,
    }
}
